package com.example.security.service;

import com.example.security.common.PageResult;
import com.example.security.dto.RoleDTO;
import com.example.security.entity.SysRole;

import java.util.List;

/**
 * 角色服务接口
 */
public interface RoleService {
    
    /**
     * 分页查询角色
     */
    PageResult<SysRole> getRolePage(int pageNum, int pageSize, SysRole query);
    
    /**
     * 获取角色列表
     */
    List<SysRole> getRoleList();
    
    /**
     * 获取角色权限ID列表
     */
    List<Long> getRolePermissionIds(Long roleId);
    
    /**
     * 分配角色权限
     */
    void assignRolePermissions(Long roleId, List<Long> permissionIds);
    
    /**
     * 添加角色
     */
    void addRole(SysRole role);
    
    /**
     * 更新角色
     */
    void updateRole(SysRole role);
    
    /**
     * 删除角色
     */
    void deleteRole(Long roleId);
    
    /**
     * 获取所有角色
     */
    List<SysRole> getAllRoles();
    
    /**
     * 创建角色
     */
    SysRole createRole(RoleDTO roleDTO);
    
    /**
     * 更新角色
     */
    SysRole updateRole(Long roleId, RoleDTO roleDTO);
    
    /**
     * 分配权限
     */
    void assignPermissions(Long roleId, List<Long> permissionIds);

    List<String> getUserRoleCodes(Long userId);

}